---
title: SAIF.Business.Utilities operations and processes
summary: Business and technical operations supported by this library.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-21
library: SAIF.Business.Utilities
reference_type: embedded
---

# SAIF.Business.Utilities operations and processes

This page is the operation catalog and cross-operation hub for this library. Each operation's detailed, step-by-step logic lives in its own page under `operations/`.

## Operation catalog
| Operation | Intent | Trigger | Inputs | Outputs | Rules |
| --- | --- | --- | --- | --- | --- |
| [Convert text to title case](operations/op-01-convert-to-title-case.md) | Format stored text into human-readable title case | Display-layer caller formats a stored value | String (free-form text with mixed delimiters) | Title-cased string with original delimiters preserved | [BR-001](business-rules.md#br-001-null-or-whitespace-string) through [BR-012](business-rules.md#br-012-surname-prefixes) |
| [Case a single word](operations/op-02-case-single-word.md) | Apply casing rules to individual tokens | Per-token processing during title case | Single word token | Cased word per applicable list | [BR-004](business-rules.md#br-004-preformatted-mixed-case) through [BR-012](business-rules.md#br-012-surname-prefixes) |
| [Convert a number to English words](operations/op-03-number-to-text.md) | Render numeric values as written English | Legal/printed output requires word rendering | Long integer (whole number) | Space-delimited English words | [BR-013](business-rules.md#br-013-number-magnitude-limit) through [BR-016](business-rules.md#br-016-magnitude-band-decomposition) |
| [Sentence-case a string](operations/op-04-sentence-case.md) | Normalize string to first-letter-upper casing | Display normalization for sentence-style text | String (any casing) | First character upper, remainder lower | [BR-017](business-rules.md#br-017-sentence-case-normalization) |
| [Pad capital letters](operations/op-05-pad-capital-letters.md) | Expand run-together identifiers into spaced words | Caller wants Pascal-cased text converted to words | String (may be run-together, e.g. `PolicyName`) | String with spaces inserted at capitals, or original if already spaced | [BR-018](business-rules.md#br-018-capital-padding-skip) |

## Failure and edge-case behavior
- **`ToTitleCase` with `Nothing` or whitespace-only input**: returns the input unchanged without raising an exception ([BR-001](business-rules.md#br-001-null-or-whitespace-string)).
- **`ToTitleCase` with only delimiter characters**: preserves the original string if no word tokens are found ([BR-002](business-rules.md#br-002-delimiter-only-input)).
- **`NumberToText` exceeding magnitude limit**: throws `ApplicationException("Number too large to convert to text.  Limit is 999,999,999,999,999.")` for values > 999,999,999,999,999 ([BR-013](business-rules.md#br-013-number-magnitude-limit)).
- **`NumberToText` with zero**: returns an empty string, not the word "Zero"; this also terminates recursion for exact multiples ([BR-015](business-rules.md#br-015-zero-empty-string)).
- **Recursive depth**: Both `TitleCase.ReassembleString` and `mdlTextConversion.NumberToText` use recursion; depth scales with word count and numeric magnitude respectively*.
- **Index-out-of-range risk**: A source string whose delimiter positions do not align with reassembly index computation can surface an `IndexOutOfRangeException` from `inSourceString.ElementAt(...)`**.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Business rules](business-rules.md)
- [API reference](api/index.md)

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Business.Utilities/TitleCase.vb`
- `SAIF.Business.Utilities/mdlTextConversion.vb`
